﻿using UI.Login.Data;

namespace UI.Login
{
    /// <summary>
    /// 登录管理器 主要用于管理 登录相关的数据
    /// </summary>
    public class LoginMgr
    {
        private static LoginMgr instance = new LoginMgr();
        public static LoginMgr Instance => instance;
        private LoginMgr()
        {
            loginData = XmlDataMgr.Instance.LoadData(typeof(LoginData), "LoginData") as LoginData;
            //获取注册数据 从xml文件中获取
            registerData = XmlDataMgr.Instance.LoadData(typeof(RegisterData), "RegisterData") as RegisterData;
            //获取服务器数据
            serverInfo = XmlDataMgr.Instance.LoadData(typeof(ServerInfo), "ServerInfo") as ServerInfo;
        }
        //服务器数据
        private ServerInfo serverInfo;
        //方便外部获取 为了安全
        public ServerInfo ServerInfo => serverInfo;
        //登录面板 记录的玩家数据
        private LoginData loginData;
        //为了安全 提供一个 只能得不能改的 属性给外部 获取 登录相关的信息
        public LoginData LoginData => loginData;
        public void SaveLoginData()
        {
            XmlDataMgr.Instance.SaveData(loginData, "LoginData");
        }
        //所有玩家的注册数据
        private RegisterData registerData;
        //为了安全 提供一个 只能得不能改的 属性给外部
        public RegisterData RegisterData => registerData;
        public void SaveRegisterData()
        {
            XmlDataMgr.Instance.SaveData(registerData, "RegisterData");
        }
        
        /**
         * 检查用户名和密码是否合法
         */
        public bool CheckInfo(string userName, string passWord)
        {
            if( registerData.registerInfo.ContainsKey(userName) )
            {
                if( registerData.registerInfo[userName] == passWord )
                {
                    return true;
                }
            }
            return false;
        }
        //提供给外部注册的方法 返回值 代表是否注册成功
        public bool RegisterUser(string userName, string passWord)
        {
            //判断是否重复了用户名
            if(registerData.registerInfo.ContainsKey(userName))
            {
                return false;
            }
            //记录注册信息
            //添加到字典中进行记录
            registerData.registerInfo.Add(userName, passWord);
            //注册成功保存信息
            SaveRegisterData();

            return true;
        }
        //注册成功后 应该把上一次别人登录的 id清空
        public void ClearLoginData()
        {
            loginData.frontServerID = 0;
        }
    }
}